package com.itheima.d4_enum;

//目标：掌握枚举类的定义
public class Demo01 {
    public static void main(String[] args) {
        /**
         * 格式：
         *      修饰符 enum 枚举类名{
         *          枚举类实例对象名;
         *      }
         *
         * 特征：
         *     枚举类内部第一行都用来罗列枚举对象的名称，多个之间用逗号隔开，最后用分号结束
         *     枚举类都是继承了枚举类型：java.lang.Enum
         *     枚举都是最终类，不可以被继承
         *     构造器都是私有的，枚举对外不能创建对象
         *     枚举类相当于是多例模式
         */

        //需求：使用枚举类定义描述季节的类Season，并打印枚举的值

        //1.一年只有4个季节，所以季节类按理说不应该能无限创建对象，只能创建4个对象才合理。使用枚举定义！

        //2.枚举类构造器默认是私有，不能new
        //new Season();

        //3.枚举类的对象在定义类的时候就声明了，所以可以直接拿来用
        // 枚举类第一行声明的对象，默认是用 public static final修饰。就可以用类名访问
        System.out.println(Season.SPRING);
        System.out.println(Season.SUMMER);

        //4.拿到对象，也可以访问其他成员
        Season winter = Season.WINTER;
        System.out.println(winter.field);
        winter.method();

        //5.枚举类底层会自动新增一些方法，而且也默认继承java.lang.Enum类，所以有方法可以直接继承使用！
        Season autumn = Season.valueOf("AUTUMN");
        System.out.println(autumn);

    }
}

